package com.itheima.dao;

import com.itheima.pojo.Setmeal;
import com.itheima.pojo.Setmeal;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author 吴
 * @version V1.0
 * @Description  套餐组
 * @Package com.itheima.dao
 * @date 2021/11/22 11:13
 */
public interface SetMealDao {

    /**
     * 查询全部的套餐组
     * @return
     */
    List<Setmeal> findAll();

    /**
     * 带条件分页查询套餐组信息
     * @param queryString
     * @return
     */
    List<Setmeal> selectByCondition(String queryString);


    /**
     * 新增套餐组
     * @param setmeal
     */
    void add(Setmeal setmeal);

    /**
     * 添加套餐组和检查组的关系 t_setmeal_checkgroup
     * @param setmealId
     * @param checkGroupId
     */
    void setSetmealAndCheckGroups(@Param("setmealId") Integer setmealId, @Param("checkGroupIds") Integer[] checkGroupId);


    /**
     * 根据id查询套餐组信息
     * @param id
     * @return
     */
    Setmeal findById(Integer id);

    /**
     * 根据套餐组id查询关联的检查组id
     * @param setmealId
     * @return
     */
    Integer[] findCheckGroupsIdsBySetmealId(Integer setmealId);

    /**
     * 修改套餐组信息
     * @param setmeal
     */
    void update(Setmeal setmeal);


    /**
     * 根据id删除套餐组
     * @param setmealId
     */
    void deleteById(Integer setmealId);

    /**
     *  根据套餐组id删除套餐组和检查项的关系
     * @param setmealId
     */
    void deleteSetmealAndCheckGroups(Integer setmealId);

    /**
     * 根据套餐ID查询套餐信息和包含的检查组信息、检查项信息
     * @param setmealId 套餐ID
     * @return
     */
    Setmeal selectCheckGroupsById(Integer setmealId);


    /**
     * 查询每个套餐预约人数
     * @return
     */
    @MapKey("name")
    List<Map<String,Object>> findSetmealOrderCount();

    /**
     * 查询热门套餐(前三)
     * @return
     */
    @MapKey("name")
    List<Map<String,Object>> selectHotSetmeal();
}
